package keer.httpinterface.annotation;

import java.lang.annotation.*;

/**
 * 请求参数注解，用于标注接口方法上的请求参数、
 * 此注解可用于方法参数，也可用于方法参数pojo类的属性中。当使用此注解标注方法参数时，
 * 表示该参数为请求参数，参数名默认为空，可以通过value属性指定参数名。如果方法参数为pojo类型或则pojo类型实例数组，
 * 则会将pojo对象中的所有属性作为请求参数，属性名默认为属性名，可以通过NamedArg注解指定参数名。
 * 如果方法参数为原始类型及其包装类，或者字符串类型，且{@link #value()}未指定参数名，则忽略此参数标记
 *
 * @author Keer
 * @since 2024-10
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Documented
public @interface Arg {
    /**
     * 参数名
     * @return
     */
    String value() default "";
}
